package net.alan.modules.service;

import net.alan.modules.bean.*;
import org.springframework.data.domain.Page;

import java.util.List;

/**
 * Author 李岩飞
 * Email eliyanfei@126.com
 * 2017/11/21
 */
public interface INoteService extends IBaseService {
    /**
     * 根据用户信息获取笔记
     *
     * @param userId
     * @param pageModel
     * @return
     */
    Page<Note> findNoteByUserId(Integer userId, PageModel pageModel);

    /**
     * 根据用户信息和目录获取笔记
     *
     * @param userId
     * @param catalogId
     * @param pageModel
     * @return
     */
    Page<Note> findByNoteUserIdAndCatalogId(Integer userId, Integer catalogId, PageModel pageModel);

    /**
     * 根据笔记Id获取历史笔记
     *
     * @param noteId
     * @param pageModel
     * @return
     */
    Page<NoteHistory> findNoteHistoryByNoteId(Integer userId, Integer noteId, PageModel pageModel);

    /**
     * 根据用户信息获取目录列表
     *
     * @param userId
     * @return
     */
    List<NoteCatalog> findNoteCatalogByUserId(Integer userId);

    /**
     * 删除目录，删除的时候需要核查
     *
     * @param id
     * @return
     */
    Result deleteCatalog(Integer id);

    /**
     * 删除个人笔记
     *
     * @param id
     * @return
     */
    Result deleteNote(Integer id);

    /**
     * 保存笔记
     *
     * @param note
     * @return
     */
    Result saveNote(String content, Note note);

    /**
     * 根据共享ID获取
     *
     * @param shareId
     * @return
     */
    Note getNoteByShareId(String shareId);
}
